home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fritz: All Fritz
/
All Fritz.zip
/
All Fritz
/
FILES
/
COMMADIO
/
KERMIT1.LZH
/
PCDOWNLO.DOC
< prev
next >
Wrap
Text File
|
1980-01-01
|
9KB
|
233 lines
4.4. 8086/8088
If you need to install Kermit on your PC, and you do not have a Kermit floppy
but you do have access to a mainframe computer with a copy of the IBM PC Kermit
distribution, you should read this section.
Kermit for the IBM PC is written in assembly language. The PC assembler,
however, is not provided with the minimum system, so IBM PC users cannot be ex-
pected to have it. Assembler source plus the runnable version (.EXE) of Kermit
19
are distributed , along with some special "bootstrap" files, described below:
The KERMIT.EXE file is converted by an assembler program on the PC, KFIX, which
makes all bytes in the file printable by breaking each one up into two 4-bit
"nibbles" and adding a constant. The result is a printable file called
KERMIT.FIX. It is assumed that a copy of KERMIT.FIX is available to you on a
mainframe computer. To download the file to the PC, two cooperating programs
are run: a Fortran program, KSEND, on the mainframe and a Basic program, KGET,
on the PC. These programs are very short; they are shown in their entirety
_______________
19
The PC assembler's object (.OBJ) files are not printable, like CP/M hex
files, so the Kermit-80 bootstrapping technique would not work here.
- 42 -
below. KSEND reads a line at a time from KERMIT.FIX, types the line, and waits
for a signal from KGET that it can send more data. KGET reads each line and
converts the text back to the format of an executable (.EXE) file. Here's the
procedure:
1. You should have a version of KGET on the PC and KSEND on the
mainframe; if you don't have them, copy them (i.e. type them in,
20
using an editor ) from the listings below.
2. Log in on the mainframe. This could be tricky if you have no ter-
minal emulation facility on the PC. If you have the IBM
asynchronous communication package, you can do this at low speeds
(baud rates). If your PC has no terminal emulation facility, you'll
have to use a real terminal to log in, and then switch the cable to
the PC.
3. Compile KSEND.FOR on your mainframe, if it needs compiling. Define
logical unit numbers 5 and 6 to be the controlling terminal, and
logical unit number 7 to be KERMIT.FIX. On the DEC-20, for example:
@define 5: tty:
@define 6: tty:
@define 7: kermit.fix
On a DECsystem-10, do something like:
.assign tty: 5:
.assign tty: 6:
.assign dsk: 7:
.rename for007.dat=kermit.fix
On an IBM system under VM/CMS,
.filedef 5 term ( lrecl 64 recfm f
.filedef 6 term ( lrecl 64 recfm f
.filedef 7 disk kermit fix ( lrecl 64 recfm f perm
Start KSEND on the mainframe. It will print a message, and then sit
and wait for the PC to send back an OK; don't change any connectors
until you see the message.
4. Escape back to the PC, or connect the PC to the mainframe. The PC's
communication port should be connected with a null modem cable to
the modem that's connected to the mainframe (dialup, dedicated,
switched, whatever hookup you normally have available for logging in
on the mainframe from a terminal). If you were using a different
terminal to log in to the mainframe, make sure the PC's communica-
tion port is set at the same speed.
5. Enter BASIC and run KGET on the PC. If KGET prints messages about
_______________
20
You'll also have to compile and load the Fortran program on the mainframe.
- 43 -
i/o errors, run it again. If it still gets errors, reboot the PC
and try again. Once KGET is running, the transmission will begin.
KGET will print each 64-character line of nibbles as it arrives from
the mainframe. Each line should be the same length -- if you see a
ragged edge, you can assume there has been a transmission error, and
you should start the process again.
6. When transmission is complete, you'll see the BASIC "Ready" prompt
again. Leave BASIC by typing SYSTEM. You should now have
KERMIT.EXE on your PC. Try to run it. If you see the "Kermit-86>"
prompt, try to CONNECT to the host mainframe and transfer some
files. If Kermit doesn't run correctly, there may have been trans-
mission errors, in which case you should start the process again
from step 2 above.
This is the mainframe side, KSEND, in transportable Fortran (it should run on
both DEC and IBM mainframes):
C KSEND -- Download a file over the terminal line. No special checking is done,
C except to wait for response (any response at all) from other side.
C
C This Fortran program should be run on the mainframe in conjunction
C with the KGET program on the IBM PC to transfer KERMIT.FIX to the PC.
C
C Daphne Tzoar, CUCCA, Jan 83
INTEGER A(64)
WRITE(6,50)
50 FORMAT(' Ready to transfer data......')
C - Get terminal handshake
100 READ (5,10,END=35)X
10 FORMAT(A1)
C - Get line from file
35 READ (7,20,END=90)A
20 FORMAT(64A1)
C - Write to tty
WRITE (6,25)A
25 FORMAT(' ',64A1,';')
GOTO 100
90 CONTINUE
C - Send final handshake
WRITE (6,30)
30 FORMAT(' ',65('@'))
STOP
END
The final @'s tell KGET that the transmission is done. This works because the
technique for forming KERMIT.FIX ensures that the file will contain no @'s.
This is the PC side, KGET, in PC Basic. Note that the communication port is
opened at 4800 baud (you could substitute any other speed).
- 44 -
1 'KGET.BAS
5 'Run this program on the PC in conjunction with a Fortran program on the
6 'mainframe to get Kermit to the PC. Daphne Tzoar, CUCCA, Jan 83
10 OPEN "com1:4800,n,8,1" AS #1 ' Clear the port status.
20 CLOSE #1
30 OPEN "com1:4800,n,8,1,cs,ds,cd" AS #1 ' Open it for real.
40 OPEN "KERMIT.EXE" FOR OUTPUT AS #2
50 OK$ = "ok"
60 PRINT#1,OK$ ' Tell host we're ready for data
70 X$=INPUT$(65,#1) ' Data plus semi-colon
80 VALUE$ = LEFT$(X$,1) ' First char of input
90 VALUE = ASC(VALUE$)
100 IF VALUE = 64 OR VALUE = 192 GOTO 430 ' @ means we're done
110 IF VALUE >= 160 AND VALUE <= 175 THEN GOTO 140 ' Kill all illegal chars
120 IF VALUE >= 32 AND VALUE <= 47 THEN GOTO 140
130 X$ = MID$(X$,2) : GOTO 80
140 IF VALUE <> 174 GOTO 210 ' Not a dot (for read) - don't worry
150 TWO$ = MID$(X$,2,1) ' Look at char after the dot.
160 TWO = ASC(TWO$)
170 IF TWO >= 160 AND TWO <= 175 THEN GOTO 210 ' It's ok.
180 IF TWO >= 32 AND TWO <= 47 THEN GOTO 210
190 X$ = MID$(X$,3) ' Kill the char
200 GOTO 80
210 SIZ = LEN(X$) ' How much input was actual data
220 READIN = 65 - SIZ
230 XTWO$=INPUT$(READIN,#1) ' Get rest of data
240 X$ = X$ + XTWO$ : X$ = LEFT$(X$,64)
250 PRINT X$ ' Optional - use this line to follow the transmission
260 GOSUB 290
270 PRINT#2,X$; ' Put data to the file.
280 GOTO 60
290 ' Get two chars, subtract space (20 hex) from each, and combine
300 ' to one digit.
310 FOR A = 1 TO 32
320 Y$ = MID$(X$,A,1)
330 Z$ = MID$(X$,A+1,1)
340 YNUM = ASC(Y$) : ZNUM = ASC(Z$)
350 IF YNUM > 127 THEN YNUM = YNUM - 128 ' Turn off hi bit if on
360 IF ZNUM > 127 THEN ZNUM = ZNUM - 128
370 YNUM = YNUM -32 : ZNUM = ZNUM -32 ' Subtract the space
380 XNUM = (16 * YNUM) +ZNUM
390 NEWCHR$ = CHR$(XNUM)
400 X$ = MID$(X$,1,A-1) + NEWCHR$ + MID$(X$,A+2)
410 NEXT A
420 RETURN
430 PRINT " [All done.]"
440 CLOSE #1,#2 ' Clean up.
450 END
If you already have a working Kermit on your PC and you want to get a new one,
you should use Kermit itself to transfer the KERMIT.FIX file. Once you have
the new KERMIT.FIX on your PC disk:
1. Rename KERMIT.EXE to something else, so you'll still have it in case
- 45 -
something goes wrong.
2. Modify KGET:
a. Remove lines 10 and 20.
b. Change line 30 to
30 OPEN "KERMIT.FIX" FOR INPUT AS #1
c. Remove line 60, since we're not handshaking with a remote host
any more.
d. In line 70, change "65" to "64".
e. Remove line 250, since there's no need to monitor a transmis-
sion line.
f. Change line 280 from "GOTO 60" to "GOTO 70".
3. Save the modified KGET under a new name, say KEXE.BAS, and run it.
It will end with some error like "Input past end in 70", which just
means it came to the end of file (of course, you could avoid this
error by trapping it, but no harm is done in any case).
4. You should now have a new, working version of KERMIT.EXE on your PC
disk.